// var deepCopy = function(obj) {
//     if (typeof obj !== 'object') return;
//     var newObj = obj instanceof Array ? [] : {};
//     for (var key in obj) {
//         if (obj.hasOwnProperty(key)) {
//             newObj[key] = typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key];
//         }
//     }
//     return newObj;
// }

; (function () {
    return
    //   浅拷贝
    let copy = function (val) {
        if (!(val instanceof Object)) return val
        let newVal = val instanceof Array ? [] : {}

        // Object.hasOwnProperty.call(val) //确保用的是这个方法
        // val.hasOwnProperty // 方法可能被覆盖
        for (var key in val) {
            if (Object.hasOwnProperty.call(val, key)) {
                newVal[key] = val[key];
            }
        }

        return newVal
    }
    let arr1 = [[1, 1], 'json', { a: 22 }, 8]
    let arr2 = copy(arr1)
    console.log(arr2)
})();

; (function () {
    //return
    //   深拷贝
    let copy = function (val) {
        if (typeof val !== 'object' || val === null) return val
        let newVal = val instanceof Array ? [] : {}
        console.log('进来了');
        // Object.hasOwnProperty.call(val) //确保用的是这个方法
        // val.hasOwnProperty // 方法可能被覆盖
        for (let key in val) {
            if (Object.hasOwnProperty.call(val, key)) {
                console.log(123456,key);
                newVal[key] = val[key] instanceof Object ? copy(val[key]) : val[key]
            }
        }

        return newVal
    }
    let arr1 = [[1, 1], 'json', { a: 22 }, 8]
    let arr2 = copy(arr1)
    arr1[0] = 0
    arr1[4] = 0
    let a = 4
    b = copy(a)
    console.log(arr1)
    console.log(arr2)
    // console.log(b);
})();
